Amazon QuickSight の periodOverPeriod 関数のオフセット値を動的に変更できるか検証してみた

Amazon QuickSight の periodOverPeriod 関数のオフセット値を動的に変更できるか検証してみた

Clock Icon2024.07.27

Amazon QuickSight の periodOverPeriod 関数シリーズを使って、n 日前(例:1 年前、1 か月前)との比較をする際に、n の値を動的に変更できるか検証しました。本記事ではその検証結果を紹介します。

検証結果

Amazon QuickSight の periodOverPeriod 関数シリーズを使用した完全な動的な日付比較は、現状では困難でした。パラメータを使用した外部から手動で調整や、sumIf 関数を使用した代替手法により、ある程度の柔軟性を持たせることは可能でした。

代替手法は以下のブログを参照ください。

https://dev.classmethod.jp/articles/how-to-compare-two-day-data-sets-with-amazon-quicksight/

背景

データ分析において、過去のデータと現在のデータを比較することは一般的で、特に前年同月比の確認は頻繁に行われます。QuickSight の periodOverPeriod 関数シリーズは、この比較を容易にするために用意されています。

比較する期間を固定値(例:1 年前、1 か月前)ではなく、動的に期間を変更したいというニーズがあります。そこで、periodOverPeriodLastValue 関数の期間指定を動的に変更可能かを検証しました。

periodOverPeriodLastValue関数の例ですと、以下の計算フィールドは 1 か月前の値を表示します。この最後の 1 (オフセット値)を動的に変更可能かの検証です。

periodOverPeriodLastValue([値のフィールド], [日付フィールド], MONTH, 1)

検証内容と結果

1. 計算フィールドの利用

計算フィールドを使用して 1 ヶ月前の値を取得は可能です。しかし、オフセット値(例では 1)を動的に変更はできません。この部分は固定値である必要があります。

計算フィールドの設定画面です。periodOverPeriodLastValue 関数が使用され、オフセット値として固定の数値 "1" が入力されています。

計算フィールドの例

オフセット値に計算フィールドを指定しようとすると、以下のようなエラーが発生します。

エラーメッセージ

計算フィールドをオフセット値として使用できないことがわかりました。

2. パラメータの利用

次に、パラメータを使用して動的に値を変更する方法を試みました。パラメータ自体は設定可能でしたが、自動的に変更はできません。ユーザーがダッシュボード上でパラメータを手動で変更は可能ですが、データに基づいて自動的に値を変更はできません。

整数値のパラメータを作成し、デフォルト値として "1" を設定した例です。

パラメータ設定の例

作成したパラメータをオフセット値として使用すると、関数のエラーは発生しません。

パラメータ使用の例

パラメータのコントロール画面で "1" が入力されている場合、1 か月前の数値が表示されます。

パラメータ選択の例

"2" を入力すると 2 か月前の値を取得できます。

パラメータ変更の結果

検証結果

パラメータを利用することでオフセット値を外部から変更可能でした。しかし、計算結果に基づいてパラメータの値を自動的に変更はできません。

都合が悪いケース

例えば、特定の 2 つの日付間の値を比較したい場合、その日付の差の数値を手動でパラメータに入力する必要がでてきます。これはユーザーフレンドリーではありませんね。

日付差の例

代替案

この制約を踏まえ、他の方法を検討しました。有効な代替案として、sumIf 関数を使用して動的な日付比較を実現する方法があります。

詳細については、以下の記事を参照してください。

https://dev.classmethod.jp/articles/how-to-compare-two-day-data-sets-with-amazon-quicksight/

sumIf 関数を使用することで、より柔軟な日付比較が可能になり、動的な期間設定にも対応できます。

まとめ

現状の QuickSight では、periodOverPeriod 関数を使用した完全に動的な日付比較は困難です。しかし、パラメータを使用した手動での調整や、sumIf 関数を使用した代替手法により、ある程度の柔軟性を持たせることが可能です。

おわりに

月や日付単位で任意の n 日前、n か月前と比較したいとなると、periodOverPeriod 関数シリーズは柔軟性に欠けて扱いづらかったです。sumIf関数で自力比較関数を作る方法が柔軟性が高く使い勝手がよかったです。同じく悩める QuickSight ユーザーのお役に立てば幸いです。

参考

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.